package net.info.store;


import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

public interface KeyValueStore {

    public long getDefaultExpire();

    public void setDefaultExpire(long ms);

    public boolean hasKey(String k);

    public void del(String k);

    public void cleanup();

    public void close();

    public void set(String k, boolean v);

    public void set(String k, int v);

    public void set(String k, long v);

    public void set(String k, float v);

    public void set(String k, double v);

    public void set(String k, String v);

    public void set(String k, byte[] v);

    public void set(String k, JSONObject v);

    public void set(String k, JSONArray v);

    public void set(String k, Object v);

    public void set(String k, boolean v, long ms);

    public void set(String k, int v, long ms);

    public void set(String k, long v, long ms);

    public void set(String k, float v, long ms);

    public void set(String k, double v, long ms);

    public void set(String k, String v, long ms);

    public void set(String k, byte[] v, long ms);

    public void set(String k, JSONObject v, long ms);

    public void set(String k, JSONArray v, long ms);

    public void set(String k, Object v, long ms);

    public boolean getBoolean(String k, boolean v);

    public int getInt(String k, int v);

    public long getLong(String k, long v);

    public float getFloat(String k, float v);

    public double getDouble(String k, double v);

    public String getString(String k, String v);

    public boolean getBoolean(String k);

    public int getInt(String k);

    public long getLong(String k);

    public float getFloat(String k);

    public double getDouble(String k);

    public String getString(String k);

    public byte[] getBytes(String k);

    public JSONObject getJSONObject(String k);

    public JSONArray getJSONArray(String k);

    public <T> T getObject(String k, Class<T> className);
}
